package com.yeren.list.arrayList;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
 * 当元素自身提供的比较规则不能满足我们对于排序的需求时，
 * 我们可以额外的提供一种比较规则。
 * @author Administrator
 */

public class ListDemo8 {
	public static void main(String[] args) {
		List<String> list=new ArrayList();
		list.add("范传奇");
		list.add("张三");
		list.add("张磊");
		list.add("翔哥");
		list.add("张四");
		list.add("苍老师");
		System.out.println(list);//[范传奇, 张三, 张磊, 翔哥, 张四, 苍老师]
		MyComparator com=new MyComparator();
		
		Collections.sort(list,com);
		System.out.println(list);//[张三, 张磊, 翔哥, 张四, 范传奇, 苍老师]
	}
}
/*
 *1.一旦Java类实现了Comparable接口，其比较逻辑就已经确定，如果希望在排序的操作中临时指定
 *  比较规则，可以采用 Comparator接口回调的方式。
 *2.Comparator接口要求实现类必须重写其定义的方法：
 *  int compare(T o1,T o2)
 *3.该方法的返回值要求：
 *  若o1>o2则返回值>0
 *  若o1<o2则返回值<0
 *  若o1==o2则返回值为0
 */
class MyComparator implements Comparator<String>{
	public int compare(String o1,String o2){
		//哪个字符串的字符多哪个字符串大
		return o1.length()-o2.length();
	}
}
